package alg;
//给定一个字符串 s ，请你找出其中不含有重复字符的 最长子串的长度。
//示例 1:
//输入: s = "abcabcbb"
//输出: 3
//解释: 因为无重复字符的最长子串是 "abc"，所以其长度为 3。
class Solution {
    public int lengthOfLongestSubstring(String str) {
        int left = 0,right = 0,n = str.length();
        char[] s = str.toCharArray();
        int[] hash = new int[128];//用数组模拟哈希表
        int ret = 0;
        while(right < n){
            hash[s[right]]++;//进窗口
            while(hash[s[right]]>1)//判断
                hash[s[left++]]--;//出窗口
            ret = Math.max(ret,right - left +1);
            right++;//让下一个字符进入窗口


        }
        return ret;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        String str = "abcdeabc";
        System.out.println(solution.lengthOfLongestSubstring(str));
    }
}